package com.zxwl.common.type;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;

public class ZxwlTypeConverter extends DefaultTypeConverter
{
	private static ZxwlTypeConverter zxwlTypeConverter;
	
	public static ZxwlTypeConverter getInstance()
	{
		if(zxwlTypeConverter == null)
		{
			zxwlTypeConverter = new ZxwlTypeConverter();
		}
		return zxwlTypeConverter;
	}
	@SuppressWarnings("rawtypes")
	@Override
	public Object convertValue(Object value, Class toType)
	{
		if(value == null && "".equals(value))
		{
			return null;
		}
		// 如果是集合类型
		if(value instanceof List)
		{
			 return value;
		}
		// 如果是日期类型
		if(toType == Date.class )
		{
			if(toType == value.getClass())
			{
				return value;
			}
			Date result = null;
			String val = value.toString();
			SimpleDateFormat format;
			if(val.length() >= 19 )
			{
				format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 转换为自己想要日期格式
			}
			else
			{
				format = new SimpleDateFormat("yyyy-MM-dd"); // 转换为自己想要日期格式
			}
			try
			{
				result = format.parse(value.toString());
			}
			catch(Exception e)
			{
				// 尝试js默认格式转换
				format = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", java.util.Locale.US);
				try 
				{
					result = format.parse(value.toString());
				} 
				catch (Exception ex) 
				{
					return null;
				}
			}
			return result;
		}
		else
		{
			return super.convertValue(value, toType);
		}
	}
}
